import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "about_orm.settings")

import django

django.setup()
from app01 import models

# 多对多正向
author_obj = models.Author.objects.get(pk=1)
# print(author_obj.books.all())  # 多对多中获取另一阁orm表

# 多对多反向获取关联表对象
book_obj = models.Book.objects.get(pk=4)
# print(book_obj.author_set.all())

# 多对多反向搜索查找关联表对象属性，返回原表对象
ret = models.Book.objects.filter(author__name='小亮')
print(ret)

# 关系管理对象的方法，（列表中，可以是pk值，也可以是对象）
# （从作者对象去更改，多对多表中的对应关系）
author_obj.books.set([1, 2])  # 列表中指的是book的pk值

# 对象填入表中
author_obj.books.set(models.Book.objects.filter(id__in=[3, 4]))

# add 添加多对多关系,author_obj对象添加1，2pk对应关系
author_obj.books.add(1, 2)
# 将book对象中的范围对象，加*分别填入对应关系表中
author_obj.books.add(*models.Book.objects.filter(pk__in=[5, 6]))

# remove将多对多关系解除掉
author_obj.books.remove(1, 2)
author_obj.books.remove(*models.Book.objects.filter(pk__in=[5, 6]))

# create 新建一个对象，并和当前对象建立关系
author_obj.books.create(name='计算机导论', pub_id=1)

# clear 清空多对多关系
author_obj.books.clear()

